package com.golden.procedure.service;

import java.util.Date;
import java.util.List;

import com.golden.procedure.domain.WorkSchedulingSettingDO;
import com.golden.procedure.domain.WorkSeatSchedulingDO;
import com.golden.procedure.query.SchedulingQueryDO;
import com.golden.procedure.result.ResultDO;

/**
 * 席位管理 <b>Description:</b><br>
 * 
 * @author Reading.Reagan</a>
 * @version 1.0
 * @Note <b>ProjectName:</b> procedure-api <br>
 *       <b>PackageName:</b> com.golden.procedure.service <br>
 *       <b>ClassName:</b> IWorkSeatSchedulingService <br>
 *       <b>Date:</b> 2018年9月25日 下午2:38:16
 */
public interface IWorkSeatSchedulingService {

	/**
	 * 新增/编辑时，对时段进行查重 <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return int
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月26日 下午3:44:33 <br>
	 *       <b>Version:</b> 1.0
	 */
	public int checkDuplicatePlanStartOn(WorkSchedulingSettingDO domain);

	/**
	 * 查询制定时间段内或制定工位下的席位是否已被占用 <b>Description:</b><br>
	 * 
	 * @param domain
	 * @return boolean
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月26日 下午3:45:16 <br>
	 *       <b>Version:</b> 1.0
	 */
	public boolean checkSeatEnable(WorkSchedulingSettingDO domain);

	/**
	 * 编辑 <b>Description:</b><br>
	 * 
	 * @param seatSchedulingDO
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月26日 上午10:57:31 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO edit(WorkSeatSchedulingDO seatSchedulingDO);

	/**
	 * 添加席位 <b>Description:某一天或某个时间段内，相同的工位分组增加席位</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月17日 下午5:31:40 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO addSeat(WorkSchedulingSettingDO domain);

	/**
	 * 根据id获取席位信息 <b>Description:</b><br>
	 * 
	 * @param id
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月25日 下午2:38:20 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO get(Integer id);

	/**
	 * 根据工位分组id获取席位信息 <b>Description:</b><br>
	 * 
	 * @param id
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月25日 下午2:38:20 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO listBySiteSeatID(Integer siteSeatID);

	/**
	 * 查询席位信息 <b>Description:</b><br>
	 * 
	 * @param id
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月25日 下午2:38:20 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO query(SchedulingQueryDO queryDO);

	/**
	 * 编辑席位 <b>Description:某一天或某个时间段内，编辑相同的工位分组的席位拍摄时间</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月17日 下午5:31:40 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO editSeat(WorkSchedulingSettingDO domain);

	/**
	 * 设置席位状态 <b>Description:某一天或某个时间段内，设置相同的工位分组的席位状态（启用或禁用）</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月17日 下午5:31:40 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO seatStatus(WorkSchedulingSettingDO domain);
	
	/**
	 * 删除席位 <b>Description:某一天或某个时间段内，删除相同的工位分组下制定的席位</b><br>
	 * 
	 * @param domain
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月17日 下午5:31:40 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO deleteSeat(WorkSchedulingSettingDO domain);

	/**
	 * 通过席位ids批量删除 <b>Description:</b><br>
	 * 
	 * @param ids
	 * @param modifiID
	 * @param modifi
	 * @return ResultDO
	 * @Note <b>Author:</b> Reading.Reagan <br>
	 *       <b>Date:</b> 2018年9月28日 下午7:03:25 <br>
	 *       <b>Version:</b> 1.0
	 */
	public ResultDO deleteByIds(List<Integer> ids, Integer modifiID, String modifi);

}
